<?php
require_once $_SERVER['DOCUMENT_ROOT'].'/model/DAO/DAOManager.php';
require_once $_SERVER['DOCUMENT_ROOT'].'/model/Service/Service.php';
require_once $_SERVER['DOCUMENT_ROOT'].'/entities/Process.php';

/**
 * Класс, отвечающий за работу с индикатором
 */
class IndicatorService extends Service {
	
	protected $procDAO;
	protected $unitDAO;
	public function __construct($daoManager){
		parent::__construct($daoManager);
		parent::createDAO("IndicatorDAO");
		$this->procDAO = $this->daoManager->createDAO("ProcessService");
		$this->unitDAO = $this->daoManager->createDAO("UnitDAO");
	}
	/**
	 * Сохранить индикатор
	 * @param Idicator $indicator  Сохраняемый индикатор
	 */
	public function save($indicator){
		if($indicator->getIdentity() == null){
			return $this->dao->create($indicator);
		}else{
			return $this->dao->update($indicator);
		}
	}
	/**
	 * Чтение индикатора
	 * @param int $identity Идентефикатор индикатора
	 */
	public function read($identity){
		$ind = $this->dao->read($identity);
		$ind->setProcess($this->procDAO->read($ind->getProcess()->getIdentity()));
		return $ind;
	}
	
	/**
	 * Удаление индикатора
	 * @param int $identity Идентефикатор индикатора
	 */
	public function delelte($identity){
		return $this->dao->delete($identity);
	}
	/**
	 * ЗаполнитьсСписок показателей процесса
	 * @param Process $process Процесс, список показателей которого собираемся заполнять
	 */
	public function getIndicatorsForProcess(Process $process){
		$indics = $this->dao->getIndicatorsForProcess($process);
		foreach ($indics as $ind){
			$ind->setUnit($this->unitDAO->read($ind->getUnit()->getIdentity()));
		}
		return $indics;
	}
}
?>